package com.example.service.impl;

import com.example.dto.LoginDTO;
import com.example.entity.Emp;
import com.example.mapper.EmpMapper;
import com.example.service.LoginService;
import com.example.utils.JwtUtils;
import com.example.utils.PasswordEncoder;
import com.example.vo.LoginVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 登录服务实现类
 */
@Service
public class LoginServiceImpl implements LoginService {

    @Autowired
    private EmpMapper empMapper;
    
    @Autowired
    private JwtUtils jwtUtils;
    
    // 使用自定义的密码编码器
    private final PasswordEncoder passwordEncoder = new PasswordEncoder();

    /**
     * 员工登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    @Override
    public LoginVO login(LoginDTO loginDTO) {
        // 根据用户名查询员工
        Emp emp = empMapper.getByUsername(loginDTO.getUsername());
        
        // 如果员工不存在，返回null
        if (emp == null) {
            return null;
        }
        
        // 验证密码
        if (!passwordEncoder.matches(loginDTO.getPassword(), emp.getPassword())) {
            return null;
        }
        
        // 生成JWT令牌
        String token = jwtUtils.createToken(emp.getId(), emp.getUsername());
        
        // 创建并返回登录响应数据
        return new LoginVO(
                token,
                emp.getId(),
                emp.getUsername(),
                emp.getName()
        );
    }
} 